{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# abc\n",
    "\n",
    "这个模块将所有的拉丁字母和希腊字母输出为符号，因此您可以方便地执行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sympy.abc import x, y"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "是不是看起来有点笨重"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sympy import symbols\n",
    "x, y = symbols('x y')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Caveats 注意事项\n",
    "\n",
    "1. 在撰写本文时，`O`、 `S`、 `I`、 `N`、 `E` 和 `Q` 的名称与 SymPy 中定义的名称相冲突。如果您从 `sympy` 和 `sympy.abc` 导入它们，那么第二个导入将“获胜”。这只是 * imports 的问题，它应该只用于短期的代码，如交互式会话和一次性脚本，这些脚本在下一次 SymPy 升级之前无法存活，其中 SymPy 可能包含另一组不同的名称。\n",
    "\n",
    "2. 这个模块不会根据需要定义符号名，也就是说，来自 `sympy.abc import foo` 的符号名将被报告为一个错误，因为 `sympy.abc` 不包含名称 `foo`。要获得一个名为 `foo` 的符号，您仍然需要使用 `Symbol(‘foo’)`或 `symbols(‘foo’)`。你可以自由地混合使用 `sympy.abc` 和 `Symbol`/`symbols`，尽管坚持使用一种且只有一种获取这些符号的方法确实会使代码更具可读性。\n",
    "\n",
    "该模块还定义了一些特殊的名称，以帮助检测哪些名称与默认 SymPy 命名空间相冲突。\n",
    "\n",
    "`_classh1`定义了所有与 SymPy 对象冲突的单字母变量; `_classh2`定义了多字母冲突符号; `_clash` 是两者的结合。这些可以在符号化过程中传递给局部变量，如果你想要符号而不是非符号对象的名字。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "C & Q\n",
      "pi(x)\n",
      "pi(C, Q)\n"
     ]
    }
   ],
   "source": [
    "from sympy import S\n",
    "from sympy.abc import _clash1, _clash2, _clash\n",
    "print(S(\"Q & C\", locals=_clash1))\n",
    "print(S('pi(x)', locals=_clash2))\n",
    "print(S('pi(C, Q)', locals=_clash))"
   ]
  }
 ],
 "metadata": {
  "interpreter": {
   "hash": "40d3a090f54c6569ab1632332b64b2c03c39dcf918b08424e98f38b5ae0af88f"
  },
  "kernelspec": {
   "display_name": "Python 3.8.8 ('base')",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.8"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
